<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    // 1.push() 可以接收任意数量的参数， 把它们逐个添加到数组末尾， 并返回修改后数组的长度。
    // var arr = ['start'];
    // console.log(arr.push(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); //并返回修改后数组的长度 11
    // console.log(arr);

    // for (var i = 1; i <= 10; i++) {
    //     arr.push(i * 2);
    // }
    // console.log(arr);

    // 2.pop() 从数组末尾移除最后一项， 减少数组的length值， 然后返回移除的项。

    // var arr = [1, 2, 3, 4, 5];
    // console.log(arr.pop()); //5
    // console.log(arr.pop()); //4
    // console.log(arr.pop()); //3
    // console.log(arr);

    //清空一个数组，三种方式。
    // arr = []; //替换
    // arr.length = 0;//设置length
    // console.log(arr);



    // 3.unshift() 可以接收任意数量的参数， 把它们逐个添加到数组前面， 并返回修改后数组的长度
    // var arr = ['ending'];
    // console.log(arr.unshift(1, 2, 3, 4, 5)); //6
    // console.log(arr); //[1, 2, 3, 4, 5,'ending'];

    // 4.shift() 从数组前面移除一项， 减少数组的length值， 然后返回移除的项。
    // console.log(arr.shift()); //1
    // console.log(arr);


    // 5.reverse() 方法会反转数组项的顺序.
    // var arr = [1, 2, 3, 4, 5];
    // console.log(arr.reverse()); //[5, 4, 3, 2, 1]


    // 6.sort() 方法按字母表升序排列数组项。
    // unicode编码  0-9 48-57   A-Z 65-90  a-z 97-122
    // var arr = ['pear', 'banana', 'apple', 'orange'];
    // console.log(arr.sort()); // ["apple", "banana", "orange", "pear"]
    // var arrnum = [2, 5, 8, 9, 6, 3, 4, 1, 7];
    // console.log(arrnum.sort()); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
    // console.log('--------------------------------------------');
    // var arrnum = [200, 51, 81, 91, 6, 3, 4, 1000, 7];
    // console.log(arrnum.sort()); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
    // console.log(arrnum.sort(compare2));
    // console.log(arrnum.sort(function(a, b) {
    //     return a - b
    // }));
    // console.log(arrnum.sort(function(a, b) {
    //     return b - a
    // }));
    // 如果按其他方式而非字母表顺序进行数组排列，必须给sort方法传递一个比较函数做参数。
    // function compare2(a, b) {
    //     return b - a;
    // }

    //7.concat() 方可以基于当前数组中的所有项创建一个新数组，参数可以是数组项或者数组。不改变原数组
    var arr = ['hello', 'hi'];
    var newarr = arr.concat(); //将当前的数组拷贝了一份。
    var newarr1 = arr.concat(1, 2, 3, 4, 5);
    var newarr2 = arr.concat(1, 2, 3, 4, 5, arr);
    var newarr3 = arr.concat(1, 2, 3, 4, 5, arr, 'zhangsan', 'lisi');

    console.log(arr); //['hello', 'hi']
    console.log(newarr); //['hello', 'hi']
    console.log(newarr1); //["hello", "hi", 1, 2, 3, 4, 5]
    console.log(newarr2); //["hello", "hi", 1, 2, 3, 4, 5,"hello", "hi"]
    console.log(newarr3); //["hello", "hi", 1, 2, 3, 4, 5,"hello", "hi",'zhangsan', 'lisi']
    console.log(arr.concat(arr, arr, arr, arr));

    //应用：拼接数组项 + 数组值的拷贝 + 数组的扁平化(多维数组转一维)
</script>
